package com.ly.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ly.common.core.bean.R;
import com.ly.system.system.bean.dto.SysMessageDTO;
import com.ly.system.system.bean.entity.SysMessage;
import com.ly.system.system.bean.entity.SysMessageSend;
import com.ly.system.system.bean.vo.SysMessageVO;

/**
 * 系统通告表
 *
 * @author jeecg
 * @Date: 2019-01-02
 */
public interface ISysMessageService extends IService<SysMessage> {

    /**
     * 查询-id
     */
    R getId(String id);

    /**
     * 分页
     */
    R getPage(SysMessage entity, Page<SysMessage> page);


    /**
     * 新增
     */
    R add(SysMessage entity);

    /**
     * 修改
     */
    R edit(SysMessage entity);

    /**
     * 删除-id
     */
    R delete(String id);

    /**
     * 批量删除
     */
    R deleteBatch(String ids);

    /**
     * 修改-send
     */
    R editMsgSend(SysMessageSend entity);

    /**
     * 补全所有用户的推送公告关系数据
     *
     * @param commentId
     * @param tenantId
     */
    void batchInsertSysAnnouncementSend(String commentId, Integer tenantId);

    /**
     * 获取通知详情
     * @return
     */
    R getMsgSend(String id);

    /**
     * 获取各类通知数量
     * @return
     */
    R getMessageGroupCount();

    /**
     * 分页查询当前登录用户的消息， 并且标记哪些是未读消息
     */
    R getMessagePage(Page<SysMessageVO> page, SysMessageDTO dto);

    /**
     * 消息已读
     */
    R updateReadStatusMessage(SysMessageDTO dto);

    /**
     * 消息已读-all
     */
    R updateAllUnreadMessage();

    /**
     * 撤销
     * @param id
     * @return
     */
    R revokeMsg(String id);

    /**
     * 发布数据
     * @param id
     * @return
     */
    R releaseMsg(String id);
}
